home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / win_m_p / pwez51.zip / MULTSAM1.BAS < prev    next >
BASIC Source File  |  1992-04-01  |  5KB  |  127 lines

  1. DECLARE SUB SETINPT (SCRN%, WID%, EX$, INPT%(), INPT$(), BC%)
  2. DECLARE SUB SETWIND (FST%, S%, SH%)
  3. DECLARE SUB MULTINPT (SCRN%, TOFLD%, EXIT$, AEXIT%, RKEY%, RTRN$())
  4. DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
  5. DECLARE SUB PRINTW (TEXT$, R%, LC%)
  6. DECLARE SUB INPTINIT (DFORMAT%, ISDOT%, EXIT$)
  7.  
  8. '***************************************************************************
  9. ' This is an example of using a field in MULTINPT as a FIXED CHOICE     ****
  10. ' field.  Field two provides the choices of BASIC, PASCAL, OR ASSEMBLY. ****
  11. '***************************************************************************
  12. '**** THIS PROGRAM MUST BE USED WITH ONE OF THE FOLLOWING LIBRARIES:    ****
  13. '***************************************************************************
  14. '**** For QB4.+ unenhanced version use QB4UNEN.QLB                      ****
  15. '**** For BASIC 7.+ unenhanced version use PDSUNEN.QLB                  ****
  16. '**** For QB4.50 enhanced version use QBALL45.QLB or QBNER45.QLB        ****
  17. '**** For QB4.00/4.00b enhanced version use QBALL40.QLB or QBNER40.QLB  ****
  18. '**** For BASIC 7.0 enhanced version use PDSALL70.QLB or PDSNER70.QLB   ****
  19. '**** For BASIC 7.1 enhanced version use PDSALL71.QLB or PDSNER71.QLB   ****
  20. '**** Load QB or QBX with the /L option using the correct library       ****
  21. '***************************************************************************
  22.  
  23. CALL SETWIND(1, 1, 7)                   ' INITIALIZE WINDOW MEMORY
  24. CALL INPTINIT(1, 1, "")                 ' INITIALIZE INPUT MEMORY
  25. COLOR 7, 0: CLS                         ' BLANK THE SCREEN
  26. DIM RTRN$(3)                            ' FOR THE THREE FIELDS
  27.  
  28. '---------------------------------------------------------------------------
  29. ' SETINPT MUST BE CALLED FOR EACH MULTI-FIELD INPUT SCREEN
  30.  
  31. REDIM INPT%(19), INPT$(3)
  32. TOFLD% = 1: B% = 1
  33. DO
  34.   READ INPT%(B%)
  35.   IF INPT%(B%) = 9999 THEN EXIT DO
  36.   B% = B% + 1
  37.   FOR X% = 1 TO 5
  38.      READ INPT%(B%)
  39.      B% = B% + 1
  40.   NEXT
  41.   READ INPT$(TOFLD%)
  42.   TOFLD% = TOFLD% + 1
  43. LOOP
  44.  
  45. ' Alpha / numeric
  46. DATA 7,5,5,30,15,99,""
  47. ' Fixed choice - alpha / numeric
  48. DATA 30007,7,5,9,15,99,""
  49. ' Alpha / nuneric
  50. DATA 7,9,5,30,15,99,""
  51. DATA 9999
  52.  
  53. CALL SETINPT(1, 80, "1", INPT%(), INPT$(), 0)
  54. ERASE INPT%, INPT$
  55. '----------------------------------------------------------------------------
  56. ' THE MAIN PROGRAM
  57.  
  58. ' program
  59. ' program
  60.  
  61. GOSUB FIXEDEXAMPLE
  62.  
  63. ' program
  64. ' program
  65.  
  66. END
  67.  
  68. '---------------------------------------------------------------------------
  69. ' MULTI-FIELD SUB-ROUTINE
  70.  
  71. FIXEDEXAMPLE:
  72.  
  73. TOFLD% = 1: AUTOEXIT% = 0: EXIT$ = ""     ' START IN FIELD 1.  PRINT ALL
  74.                                         ' FIELDS.
  75. '----------------------------------------------------------------------------
  76. ' MAKE A WINDOW.  PRINT INSTRUCTIONS
  77.  
  78. CALL MAKEWIND(1, "@Fixed Choice Demonstration - Second field has three choices", 1, 1, 80, 12, 112, 102)
  79. CALL PRINTW("Any alpha/numeric input", 2, 38)
  80. CALL PRINTW("SPACE BAR changes field - cusror movement keys exit field", 4, 15)
  81. CALL PRINTW("Any alpha/numeric input", 6, 38)
  82. CALL PRINTW("Press F1 to end demonstration", 8, 100)
  83.  
  84. '----------------------------------------------------------------------------
  85. ' INITIALIZES DATA FOR FIELD 2.  PROGRAM ONLY DOES THIS ON FIRST CALL TO
  86. ' CALL THE MULTI-INPUT SCREEN AS MULTPASS% IS SET TO 1 AFTER FIRST PASS.
  87. ' IF THIS MULT-FIELD INPUT SCREEN IS CALLED AGAIN THE PROGRAM WILL
  88. ' "REMEMBER" WHAT WAS IN FIELD 2 AND WILL NOT RESET IT TO "BASIC"
  89.  
  90. IF MULTPASS% = 0 THEN
  91.   DIM CHOICE$(3)
  92.   CHOICE$(1) = "BASIC"              ' CHOICES FOR FIXED FIELD 2.
  93.   CHOICE$(2) = "PASCAL"             ' "                        "
  94.   CHOICE$(3) = "ASSEMBLY"           ' "                        "
  95.   LANGCHOICE% = 1                   ' MAKE IT "BASIC" FOR FIRST PASS
  96.   MULTPASS% = 1
  97. END IF
  98.  
  99. ' ---------------------------------------------------------------------------
  100.  
  101. PREINPT:
  102. RTRN$(2) = CHOICE$(LANGCHOICE%)    ' RESET FIELD 2
  103.  
  104. CALL MULTINPT(1, TOFLD%, EXIT$, AUTOEXIT%, RKEY%, RTRN$())
  105.  
  106. ' FIRST CHECK TO SEE IF THE EXIT WAS DUE TO FIELD 2 BEING EXITED,
  107. ' EITHER BY THE AUTO-EXIT FEATURE OR BY THE "F1" KEY.
  108. ' ON EXIT AUTOEXIT% POINTS TO THE FIELD THE CURSOR WAS ON WHEN MULTINPT
  109. ' WAS EXITED ( IF IT WAS AN AUTOEXIT FIELD. ).  ON EXIT TOFLD% POINTS TO
  110. ' THE FIELD THE CURSOR IS MOVING TO.
  111. ' NOTE: A FIXED CHOICE FIELD FIELD IS ALWAYS AN AUTOEXIT FIELD.
  112.  
  113.    IF AUTOEXIT% = 2 THEN           ' WAS CURSOR IN FIELD 2 ?
  114.      IF RKEY% = 32 THEN           ' WAS IT THE SPACE BAR ?
  115.         LANGCHOICE% = LANGCHOICE% + 1
  116.         IF LANGCHOICE% = 4 THEN LANGCHOICE% = 1
  117.       END IF
  118.    END IF
  119.  
  120.    IF RKEY% <> 1 THEN       ' WAS IT A CURSOR MOVEMENT KEY & FIELD 2 ?
  121.      GOTO PREINPT
  122.    ELSE
  123.      RETURN                 ' PROGRAM WILL ALWAYS COMES HERE IF "F1"
  124.    END IF                   ' IS PRESSED AS RK% = 1. ( EVEN WHEN
  125.                             ' AUTOEXIT% = 2).
  126.  
  127.